# -*- coding: utf-8 -*-
from django.db import models
from datetime import date
#from django.contrib.contenttypes.models import ContentType
#from django.contrib.contenttypes import generic

#from PidaRestauranteWeb.estoque.models import Produto

# Não faz sentido ter ItemArtesanal e ItemIndustrializado sem controle
# de estoque. Então comentei essa parte. Caso alguém não concorde, descomente tudo
# e utilize o generic FK (content type).

class Item(models.Model):
    
    CATEGORIA_CHOICES = (
        ('B', 'Bebida'),
        ('C', 'Comida'),
    )
    
    nome = models.CharField(max_length = 100)
    categoria = models.CharField(max_length = 1, choices = CATEGORIA_CHOICES)
    descricao = models.TextField()
    preco = models.FloatField()
    quantidade = models.FloatField()
    #desconto = models.FloatField()
    def get_preco_total(self):
        return u"%s"%(self.preco * self.quantidade)
    
    def __unicode__(self):
        return u"%s" % (self.nome)

#    class Meta:
#        abstract = True

#class ItemIndustrializado(Item):
#    pass

#class ItemArtesanal(Item):
#    composto = models.ManyToManyField(Produto)
#    quantidade_pessoas = models.PositiveSmallIntegerField()
    
class ItemPedido(models.Model):
    item = models.ManyToManyField(Item)
    #content_type = models.ForeignKey(ContentType)
    #item_id = models.PositiveIntegerField()
    #content_item = generic.GenericForeignKey('content_type', 'item_id')
    data_hora = models.DateTimeField(auto_now = True, auto_now_add = True)
    
class Pedido(models.Model):
    numero_mesa = models.PositiveIntegerField()
    itens = models.ManyToManyField(ItemPedido)
    data_pedido = models.DateField(default = date.today())
    valor_total = models.FloatField()
    desconto = models.FloatField()
    status = models.BooleanField(default = True)
    
    def get_total(self):
        aux = 0
        for itens in self.itens.get_query_set():
            for item in itens.item.get_query_set():
                aux+=aux+(item.preco*item.quantidade)
        return aux
    
    def __unicode__(self):
        return u"Número da mesa - %d / Data do pedido - %s" % (self.numero_mesa,(self.data_pedido).__str__()) 
    
    def field_list(self):
        return [(u'Número da mesa', self.numero_mesa), ('Data do pedido', self.data_pedido)]